package ReflectStudy.Exa8;

import java.lang.reflect.Method;

/**
 * 通过反射调用对象的方法
 */
public class MethodTest {
    public static void main(String[] args) {
        try {
            System.out.println("通过反射调用Math类的静态方法sin()");
            //获得Math中名为sin，返回参数为Double的方法对象
            Method sin = Math.class.getDeclaredMethod("sin", Double.TYPE);
            //对于静态方法，前面的obj可以为null
            Double sin1 = (Double) sin.invoke(null, 1);
            System.out.println(Math.sin(1));
            System.out.println("1的正弦值是：" + sin1);

            System.out.println("通过反射调用String类的非静态方法equals()");
            Method equalsMethod = String.class.getDeclaredMethod("equals", Object.class);
            Boolean flag = (Boolean) equalsMethod.invoke(new String("麻子"), "四郎");
            System.out.println("麻子：" + flag);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
